# 负责整个项目的配置信息
class Config:
    # 配置数据库和SQLALCHEMY
    HOSTNAME = '192.168.203.1'
    PORT = '3306'
    DATABASE = 'DongBaoShopping-test'
    USERNAME = 'root'
    PASSWORD = 'root'
    DB_URL = 'mysql+pymysql://{}:{}@{}:{}/{}?charset=utf8mb4'.format(USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)
    # (USERNAME, PASSWORD, HOSTNAME, PORT, DATABASE)-->(顺序：用户名：密码：主机地址：端口号：数据库名)

    SQLALCHEMY_DATABASE_URI = DB_URL        # 把链接数据库的参数设置到 app 中
    SQLALCHEMY_TRACK_MODIFICATIONS = False  # 不需要追踪数据的修改（相当于关掉）

    # 配置日志
    LOGGING_LEVEL = "DEBUG"
    LOGGING_FILE_DIR = "logs/"
    LOGGING_FILE_MAX_BYTES = 300 * 1024 * 1024  # 300兆
    LOGGING_FILE_BACKUP = 10    # 保存十个文件

    # 限流器采用Redis保存数据，默认是内存，需要安装flask-redis 最后的0表示0号数据库
    RATEMILIT_STORAGE_URL = "redis://192.168.203.1:6379/0"
    # 限制策略：移动窗口：时间窗口会自动变化
    RATEMILIT_STRATEGY = "moving-window"

    # redis数据库连接地址，使用1号数据库来存放 缓存数据 包括短信验证码
    REDIS_URL = "redis://192.168.203.1:6379/1"


# 开发环境的配置信息
class DevelopmentConfig(Config):
    DEBUG = True
    SQLALCHEMY_ECHO = True  # 打印sql语句


# 生产环境的配置信息
class ProductConfig(Config):
    pass


# 把两个不同的配置和字符串映射起来
map_config = {
    "develop": DevelopmentConfig,
    "product": ProductConfig
}
